<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
  <meta name="generator" content=
  "HTML Tidy for Linux/x86 (vers 1 September 2005), see www.w3.org">

  <title>Miscellaneous C++</title>
  <link href="../cppreference.css" rel="stylesheet" type="text/css">
</head>

<body>
<table>
  <tr>
  <td>
  <div class="body-content">

  <div class="header-box">
    <a href="../index.html">cppreference.com</a> &gt; <a href=
    "index.html">Miscellaneous C++</a>
  </div>

  <div class="name-format">
    auto_ptr
  </div>

  <div class="syntax-name-format">
    Syntax:
  </div>
  <pre class="syntax-box">
  #include &lt;memory&gt;
  auto_ptr&lt;class <a href="../containers.html">TYPE</a>&gt; name
</pre>

  <p>The auto_ptr class allows the programmer to create pointers that
  point to other objects. When auto_ptr pointers are destroyed, the
  objects to which they point are also destroyed.</p>

  <p>The auto_ptr class supports normal pointer operations like =, *,
  and -&gt;, as well as two functions <a href=
  "../containers.html">TYPE</a>* get() and <a href=
  "../containers.html">TYPE</a>* release(). The get() function returns
  a pointer to the object that the auto_ptr points to. The release()
  function acts similarily to the get() function, but also relieves the
  auto_ptr of its memory destruction duties. When an auto_ptr that has
  been released goes out of scope, it will not call the destructor of
  the object that it points to.</p>

  <p><strong>Warning</strong>: It is generally a <strong>bad
  idea</strong> to put auto_ptr objects inside C++ STL containers. C++
  containers can do funny things with the data inside them, including
  frequent reallocation (when being copied, for instance). Since
  calling the destructor of an auto_ptr object will free up the memory
  associated with that object, any C++ container reallocation will
  cause any auto_ptr objects to become invalid.</p>

  <div class="related-examples-format">
    Example code:
  </div>

  <div class="related-examples">
    <pre class="example-code">
 #include &lt;memory&gt;
 using namespace std;           

 class MyClass {
 public:
   MyClass() {} // nothing
   ~MyClass() {} // nothing
   void myFunc() {} // nothing
 };             

 int main() {
   auto_ptr&lt;MyClass&gt; ptr1(new MyClass), ptr2;             

   ptr2 = ptr1;
   ptr2-&gt;myFunc();           

   MyClass* ptr = ptr2.get();           

   ptr-&gt;myFunc();            

   return 0;
 }              
</pre>
  </div>
  </div>
  </td>
  


  </tr>
  </table>
</body></html>
<hr>
</body></html>
